package com.c2b.algorithm.leetcode.base;

/**
 * <a href='https://leetcode.cn/problems/minimum-common-value/'>最小公共值(Minimum Common Value)</a>
 * <p>给你两个整数数组 nums1 和 nums2 ，它们已经按非降序排序，请你返回两个数组的 最小公共整数 。如果两个数组 nums1 和 nums2 没有公共整数，请你返回 -1 。</p>
 * <p>如果一个整数在两个数组中都 至少出现一次 ，那么这个整数是数组 nums1 和 nums2 公共 的。</p>
 *
 * <p>
 * <b>示例</b>
 * <pre>
 * 示例 1：
 *      输入：nums1 = [1,2,3], nums2 = [2,4]
 *      输出：2
 *      解释：两个数组的最小公共元素是 2 ，所以我们返回 2 。
 *
 * 示例 2：
 *      输入：nums1 = [1,2,3,6], nums2 = [2,3,4,5]
 *      输出：2
 *      解释：两个数组中的公共元素是 2 和 3 ，2 是较小值，所以返回 2 。
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 *  <ul>
 *      <li>1 <= nums1.length, nums2.length <= 10^5</li>
 *      <li>1 <= nums1[i], nums2[j] <= 10^9</li>
 *      <li>nums1 和 nums2 都是 非降序 的。</li>
 *  </ul>
 * </p>
 *
 * @author c2b
 * @since 2024/1/23 15:53
 */
public class LC2540MinimumCommonValue_S {

    static class Solution {
        public int getCommon(int[] nums1, int[] nums2) {
            if(nums1[nums1.length - 1] < nums2[0]){
                return -1;
            }
            if(nums2[nums2.length - 1] < nums1[0]){
                return -1;
            }
            int index1 = 0;
            int index2 = 0;
            while (index1 < nums1.length && index2 < nums2.length) {
                if (nums1[index1] == nums2[index2]) {
                    return nums1[index1];
                } else if (nums1[index1] < nums2[index2]) {
                    ++index1;
                } else {
                    ++index2;
                }
            }
            return -1;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.getCommon(new int[]{1, 2, 3}, new int[]{2, 4}));
        System.out.println(solution.getCommon(new int[]{1, 2, 3, 6}, new int[]{2, 3, 4, 5}));
    }
}
